1 POKE52,56:POKE56,56:CLR:PRINT"[147]PLEASE[157][157][157]WAITA[157][157][157][157][157]MOMENT[157][157]FOR" 2 FORI=1504TO1543:POKEI,3:NEXT:PRINT"CREATE TUNES 64" 3 PRINT" BY:[157][157][157]ARTHUR T. CHAKALIS[157][157][157][157][157][157]COPYRIGHT ,1984"; 4 DIM H(36),L(36),D(36),HN(22),LN(22),HS(22),LS(22),ND(16) 5 DEF FNR(SL)=INT((SL-984)/40):DEF FNC(SL)=SL-(FNR(SL)*40)-983:GOSUB47 6 POKE49152,65:POKE49153,71:POKE49155,227:POKE49156,5:POKE1507,71 7 REM MAIN LOOP, TO ML SUBR.& RETURN IF FIREBUTTON PRESSED 8 SYS49168:OC=PEEK(49152):NC=PEEK(49153) 9 SL=(256*PEEK(49156))+PEEK(49155):R=FNR(SL):C=FNC(SL) 10 IFR>23THEN20:REM ROUTINES AT BOTTOM OF SCREEN 11 IFC<4THEN8:REM OUT OF RANGE, NOTES CAN'T BE PLACED IN 1ST. 3 COLUMNS 12 IFOC<66THEN16:REM GOTO PLACE NOTE ON STAFF 13 REM REMOVE NOTE FROM STAFF 14 POKE49152,PEEK((R*40)+985):POKESL,PEEK(49152):H(C-3)=0:L(C-3)=0:GOSUB42 15 D(C-3)=0:POKESL,NC:GOTO8 16 IFD(C-3)<>0THEN8:REM PLACE NOTE IFA NOTE ISN'T ALREADY IN THE COLUMN 17 POKESL+54272,13:D(C-3)=ND(NC-66):POKE49152,NC:IFNC>74THEN19 18 H(C-3)=HN(R-1):L(C-3)=LN(R-1):POKESL+54272,11:GOTO8 19 H(C-3)=HS(R-1):L(C-3)=LS(R-1):POKESL+54272,11:GOTO8 20 IFOC>66THENPOKE49153,OC:POKESL,OC:GOTO8:REM CHANGE NOTE 21 IFOC<>9THEN32:REM CHANGE INSTRUMENT 22 I=1+PEEK(1952)-48:IFI>8THENI=1 23 IFI=1THEN W=65:AD=9:SR=0:HP=0:LP=255:GOTO31 24 IFI=2THEN W=17:AD=96:SR=60:HP=0:LP=0:GOTO31 25 IFI=3THEN W=33:AD=9:SR=0:HP=0:LP=0:GOTO31 26 IFI=4THEN W=17:AD=9:SR=0:HP=0:LP=0:GOTO31 27 IFI=5THEN W=17:AD=0:SR=240:HP=0:LP=0:GOTO31 28 IFI=6THEN W=33:AD=0:SR=240:HP=0:LP=0:GOTO31 29 IFI=7THEN W=17:AD=102:SR=0:HP=0:LP=0:GOTO31 30 IFI=8THEN W=33:AD=120:SR=0:HP=0:LP=0:GOTO31 31 POKE1952,I+48:GOTO8 32 IF OC<>20THEN35:REM CHANGE TEMPO 33 T=1+PEEK(1956)-48:IFT>9THENT=1 34 POKE1956,T+48:GOTO8 35 IFOC<>16THEN 153:REM PLAY NOTES 36 X=0:FORI=1TO36:IFD(I)=0THEN38 37 X=X+1:NEXTI 38 POKE54274,LP:POKE54275,HP:POKE54277,AD:POKE54278,SR:POKE54296,V 39 FORI=1TOX:POKE54276,W:POKE54273,H(I):POKE54272,L(I) 40 FORJ=0TOD(I)/(1.4*T):NEXTJ:POKE54276,W-1:NEXTI 41 FORI=54272TO54300:POKEI,0:NEXTI:GOTO8 42 S=54272: FORI=STOS+28:POKEI,0:NEXT 43 POKE54296, 15 :POKE54277,100 :POKE54278,20 44 POKE54276, 33 :POKE54273, 56 :POKE54272, 99 45 FORI=1TO 25 :NEXT 46 FORI=STOS+28:POKEI,0:NEXT:RETURN 47 PRINTCHR$(142):REM MOVE CHARACTER MEM. LOC. 48 POKE56334,PEEK(56334)AND254 49 POKE1,PEEK(1)AND251 50 FORI=0TO511:POKEI+14336,PEEK(I+53248):NEXT 51 POKE1,PEEK(1)OR4 52 POKE56334,PEEK(56334)OR1 53 POKE53272,(PEEK(53272)AND240)OR14 54 REM PRINT INSTRUCTIONS 55 PRINT"[147]CREATE TUNES DISPLAYS A MUSICAL STAFF." 56 PRINT"A JOYSTICK IN PORT2 MOVES A NOTEAROUND. " 57 PRINT"THE FIRE BUTTON PLACES/ERASES A NOTE ON THE STAFF." 58 PRINT"THE FIREBUTTON ALSO DOES OTHER FUNCTIONSWHEN ON THE BOTTOM LINE." 59 PRINT"PRESSING IT WHILE OVER THE FOLLOWING DOES:" 60 PRINT" NOTES=PICKS UP ANY NOTE SHOWN P=PLAY NOTES ENTERED" 61 PRINT" I=CHANGE INSTRUMENT " 62 PRINT" T=CHANGE TEMPO" 63 PRINT" E=CREATE BASIC CODE FOR TUNE & DELETES ALL ELSE" 64 REM ENTER NEW CHARACTER DEFINITIONS 65 PRINT"PLEASE WAIT A MOMENT[145]":FORI=512TO599:READCH:POKEI+14336,CH:NEXT 66 DATA 0,0,0,0,255,0,0,0,0,0,0,0,51,0,0,0,255,255,255,255,255,255,255,255 67 DATA 0,0,0,0,240,144,144,240,16,16,16,16,240,144,144,244,16,16,16,16,240 68 DATA 144,144,240,16,16,16,16,240,240,240,244,16,16,16,16,240,240,240,240 69 DATA 28,16,16,16,240,240,240,244,28,16,16,16,240,240,240,240 70 DATA 28,16,28,16,240,240,240,240 71 FORI=536TO599:POKEI+14400,PEEK(I+14336):NEXT 72 FORI=600TO663STEP8 73 POKEI+14339,((PEEK(I+14339))+2) 74 POKEI+14340,(PEEK(I+14340)+7) 75 POKEI+14341,(PEEK(I+14341)+2):NEXT 76 REM ENTER NOTE DATA 77 FORI=1TO22:READ HN(I),LN(I):NEXT 78 FORI=1TO22:READHS(I),LS(I):NEXT 79 FORI=1TO16:READ ND(I):NEXT 80 DATA25,30,22,96,21,31,18,209,16,195,15,210,14,24,12,143,11,48,10,143 81 DATA9,104,8,97,7,233,7,12,6,71,5,152,5,71,4,180,4,48 82 DATA3,244,3,134,3,35 83 DATA26,156,23,181,0,0,19,239,17,195,0,0,14,239,13,78,11,218,0,0 84 DATA9,247,8,225,0,0,7,119,6,167,5,237,0,0,4,251,4,112 85 DATA0,0,3,187,3,83 86 DATA1280,960,640,480,320,240,160,80,1280,960,640,480,320,240,160,80 87 REM POKE ML SUBR. INTO MEM. 88 FOR AD= 49168TO 49351:READ DA:POKEAD,DA:NEXTAD 89 DATA 216, 173, 0, 220, 201, 111 90 DATA 240, 24, 201, 126, 240, 21 91 DATA 201, 125, 240, 40, 201, 123 92 DATA 240, 54, 201, 119, 240, 68 93 DATA 162, 160, 142, 5, 192, 76 94 DATA 17, 192, 96, 56, 173, 3 95 DATA 192, 233, 40, 133, 251, 173 96 DATA 4, 192, 233, 0, 133, 252 97 DATA 76, 123, 192, 133, 252, 76 98 DATA 123, 192, 24, 173, 3, 192 99 DATA 105, 40, 133, 251, 173, 4 100 DATA 192, 105, 0, 133, 252, 76 101 DATA 123, 192, 56, 173, 3, 192 102 DATA 233, 1, 133, 251, 173, 4 103 DATA 192, 233, 0, 133, 252, 76 104 DATA 123, 192, 24, 173, 3, 192 105 DATA 105, 1, 133, 251, 173, 4 106 DATA 192, 105, 0, 133, 252, 160 107 DATA 0, 177, 251, 201, 66, 208 108 DATA 3, 76, 17, 192, 141, 2 109 DATA 192, 173, 3, 192, 133, 253 110 DATA 173, 4, 192, 133, 254, 173 111 DATA 0, 192, 145, 253, 173, 2 112 DATA 192, 141, 0, 192, 173, 1 113 DATA 192, 145, 251, 165, 251, 141 114 DATA 3, 192, 165, 252, 141, 4 115 DATA 192, 173, 5, 192, 201, 32 116 DATA 240, 4, 56, 233, 32, 24 117 DATA 141, 5, 192, 170, 160, 0 118 DATA 136, 208, 253, 202, 208, 248 119 DATA 24, 76, 17, 192 120 PRINT"PRESS SPACE BAR TO CONTINUE":GOSUB42 121 GETA$:IFA$<>" "THEN121 122 REM SCREEN SETUP 123 POKE53280,15:POKE53281,11:PRINT"[147]":POKE53281,15:POKE646,11 124 PRINT"[194][194][194][194][194][194][194][194][194][194][194][194][194][194][194][194][194][194][194][194][194][194][194][194][194][194][194][194][194][194][194][194][194][194][194][194][194][194][194][194]"; 125 PRINT"[194] G [194]"; 126 PRINT"[194][192]F[192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][194]"; 127 PRINT"[194] E [194]"; 128 PRINT"[194][192]D[192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][194]"; 129 PRINT"[194] C [194]"; 130 PRINT"[194][192]B[192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][194]"; 131 PRINT"[194] A [194]"; 132 PRINT"[194][192]G[192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][194]"; 133 PRINT"[194] F [194]"; 134 PRINT"[194][192]E[192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][194]"; 135 PRINT"[194] D [194]"; 136 PRINT"[194][193]C[193][193][193][193][193][193][193][193][193][193][193][193][193][193][193][193][193][193][193][193][193][193][193][193][193][193][193][193][193][193][193][193][193][193][193][193][194]"; 137 PRINT"[194] B [194]"; 138 PRINT"[194][192]A[192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][194]"; 139 PRINT"[194] G [194]"; 140 PRINT"[194][192]F[192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][194]"; 141 PRINT"[194] E [194]"; 142 PRINT"[194][192]D[192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][194]"; 143 PRINT"[194] C [194]"; 144 PRINT"[194][192]B[192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][194]"; 145 PRINT"[194] A [194]"; 146 PRINT"[194][192]G[192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][194]"; 147 PRINT"[194]E P I=5 T=5 [195][196][197][198][199][200][201][202] P [203][204][205][206][207][208][209][210] P [194]"; 148 PRINT"[194][194][194][194][194][194][194][194][194][194][194][194][194][194][194][194][194][194][194][194][194][194][194][194][194][194][194][194][194][194][194][194][194][194][194][194][194][194][194]";:POKE2023,66:POKE56295,11 149 V=15:W=17:AD=0:SR=240:HP=0:LP=0:T=5 150 FORI=0TO39:POKEI+55296,15:POKEI+56256,15:NEXT 151 FORI=55335TO56255STEP40:POKEI,15:POKEI+1,15:NEXT 152 RETURN 153 IFOC<>5THEN8:REM EXIT NOTE ENTRY & GENERATE NEW PROGRAM 154 POKE53272,(PEEK(53272)AND240)OR4:PRINT"[147]" 155 INPUT"STARTING LINE NUMBER(<199)";S:IFS>199THEN157 156 INPUT"TRY AGAIN, MUST BE ABOVE 199";S:IFS<199THEN156 157 INPUT"INCREMENT";IC 158 PRINT"[147]":X=0 159 FORI=1TO36:IFD(I)=0THEN161 160 X=X+1:NEXTI 161 SA=S+(7*IC):FORI=1TOXSTEP4 162 PRINTSA;"[157]DATA";:FORJ=0TO3:IF(I+J)>XTHENPRINTCHR$(20):GOTO165 163 PRINTH(I+J);"[157],";L(I+J);"[157],";D(I+J);"[157],";:NEXTJ:PRINTCHR$(20) 164 SA=SA+IC:NEXTI 165 PRINT"S=";S;"[157]:IC=";IC;"[157]:LP=";LP;"[157]:HP=";HP;"[157]:AD=";AD;"[157]:SR=";SR; 166 PRINT"[157]:V=";V;"[157]:W=";W;"[157]:T=";T;"[157]:X=";X;"[157]:GOTO168" 167 POKE198,10:FORK=1TO10:POKE630+K,13:NEXTK:PRINT"":END 168 PRINT"[147]":PRINTS;"FORI=54272TO54300:POKEI,0:NEXTI:POKE54274,";LP:S=S+IC 169 PRINTS;"POKE54275,";HP;"[157]:POKE54277,";AD;"[157]:POKE54278,";SR:S=S+IC 170 PRINTS;"POKE54296,";V;"[157]:W=";W;"[157]:T=";T:S=S+IC 171 PRINTS;"FORI=1TO";X;"[157]:READ H,L,D:POKE54276,W:POKE54273,H":S=S+IC 172 PRINTS;"POKE54272,L:FORJ=0TOD/T:NEXTJ":S=S+IC 173 PRINTS;"POKE54276,W-1:NEXTI":S=S+IC 174 PRINTS;"FORI=54272TO54300:POKEI,0:NEXTI" 175 PRINT"LN=0:GOTO177" 176 POKE198,9:FORK=1TO9:POKE630+K,13:NEXTK:PRINT"":END 177 PRINT"[147]":FORI=LNTOLN+7:PRINTI:NEXTI 178 PRINT"LN=";LN+8;":IFLN<179GOTO177" 179 POKE198,9:FORK=1TO9:POKE630+K,13:NEXTK:PRINT"":END